package cn.com.godliu.rabbitmqprovider.controller;

import cn.com.godliu.rabbitmqprovider.config.JRedisConfig;
import com.google.gson.Gson;
import lombok.extern.slf4j.Slf4j;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.Map;

/**
 * 消费消息
 */
@Slf4j
@RestController
public class MQMessageCustomer {
    @Autowired
    //使用RabbitTemplate,这提供了接收/发送等等方法
            RabbitTemplate rabbitTemplate;


    //通过mq的控制台创建了一个消息队列，然后get方法获取消息，成功队列为cqueue
    //这里是模拟其它服务通过我的服务来消费消息，数据均定义为可系列化和反序列化，方便web间传输
    @GetMapping("/getDirectMsg")
    public String getDirectMsg(String queuename) {
        Object map = rabbitTemplate.receiveAndConvert(queuename);
        log.info("数据类型:{}", map.getClass());
        log.info("消费消息:{}", new Gson().toJson(map));


        //顺便存入redis中
        if (map != null) {
            JRedisConfig.getInstance().getJedisPool().getResource().set("message", new Gson().toJson(map));
        }

        return new Gson().toJson(map);
    }
}
